package com.liuxingwu.demo01;


/**
 * 代理，租房中介
 * 代理模式的主要功能就是实现一些额外的功能，这些功能被代理对象是没有的，但实际上又是客户需要的
 * 实现了业务的分工，公共业务就发生在扩展的时候，方便集中管理
 * 静态代理缺点：一个真实对象就会产生一个代理对象，代码量会翻倍
 *
 * @author 扫地生_LiuXingWu
 */
// 实现租房的接口
public class Proxy implements Rent {
    private Host host;

    public Proxy() {
    }

    public Proxy(Host host) {
        this.host = host;
    }

    // 租房方式的实现是通过被代理对象来实现方法的
    public void rent() {
        System.out.println("通过中介代理实现租房");
        seeHouse();     // 代理具有的额外功能
        host.rent();        // 要实现的业务功能
        hetong();       // 代理具有的额外功能
        fare();         // 代理具有的额外功能
    }

    // 额外功能
    // 中介有的功能房东没有，看房
    public void seeHouse() {
        System.out.println("中介：带客户看房");
    }

    // 签合同
    public void hetong() {
        System.out.println("中介：签租赁合同");
    }

    // 收费
    public void fare() {
        System.out.println("中介：中介收费");
    }
}
